Model Context Protocol(MCP)는 Anthropic에서 개발한 오픈 소스 표준으로,
대규모 언어 모델(LLM)이 외부 데이터 소스 및 도구와 통합할 수 있도록 설계되었습니다.
이 프로토콜은 AI 시스템이 다양한 데이터 소스와 도구에 직접 연결하여 더 나은, 더 관련성 높은 응답을 생성할 수 있도록 지원합니다
MCP는 Claude 같은 LLM이 외부 도구나 데이터 소스와 안전하고 구조화된 방식으로 상호작용하게 해주는 프로토콜입니다.
에이전트는 다음과 같은 흐름으로 동작합니다.
1. User Input
→ 사용자가 Claude에 "GitHub에 새로운 이슈 만들어줘"라고 요청
2. LLM이 판단
→ "이건 외부 행동이 필요하니까 MCP를 통해 GitHub Plugin에 요청해야겠다"
3. MCP 서버와 통신
→ GitHub MCP Plugin에 REST API 형식으로 요청 (예: POST /issues
)
4. 도구가 작업 수행
→ 실제 GitHub 이슈가 생성됨
5. 응답을 다시 사용자에게
→ Claude가 "이슈를 만들었어요. 링크는 여기입니다."라고 말함
tool: 사용하려는 외부 기능 또는 플러그인의 이름 (예: calendar, notion_api, github)
action : 해당 툴에서 수행하려는 동작 (예: create_event, get_issues, add_task)
parameters: 동작에 필요한 구체적인 인자들 (예: title, date, repo_name)
{ "tool": "calendar",
"action": "create_event",
"parameters": { "title": "회의", "date": "2025-05-15", "time": "10:00" }
}
왜 이런 구조를 쓸까요?
- 모델이 안전하게 외부 기능을 호출할 수 있게 하기 위해
- MCP 또는 Function Calling 시스템에서 쉽게 매핑되도록 설계
- 도구 기반 에이전트 시스템 (tool-using agents)와의 통합 용이
이 구조는 OpenAI의 function calling, Anthropic의 tool use, Meta의 LLaMA agents 등에서도 거의 동일하게 쓰입니다.
이건 명시적인 RFC(공식 표준)은 아니지만, 다음과 같은 핵심 철학을 따른 표준입니다.
1. 함수/도구 기반 실행 모델
- 모델은 도구(tool)를 선택하고 , 실행할 작업(action)을 정의하며 , 인자(parameters)를 명확히 지정함
2. JSON 직렬화
모든 호출은 JSON 포맷으로 직렬화, JSON schema 기반으로 검증 가능함 (type-safe)
Anthropic Claude는 현재까지는 "공식 마켓"이 아닌, 툴(tool) 정의 JSON을 직접 구성하고, 이를 Claude에 API 또는 설정으로 넘기는 방식입니다.
즉, 우리는 API를 제공하고, Claude 사용자 또는 중간 애플리케이션이 Claude에게 tool schema와 호출 방식을 알려줘야 합니다.
{ "name": "todo_service", "description": "사용자의 할 일을 관리합니다",
"functions": [
{ "name": "create_task", "description": "새로운 할 일을 생성합니다",
"parameters":
{ "type": "object", "properties":
{ "title":
{ "type": "string" },
"due_date":
{ "type": "string", "format": "date" } },
"required": ["title"] } }
] }
이런 스키마를 Claude에게 제공하면, 모델이 자연어로 해석해서 create_task
를 호출하는 방식입니다.
당신이 만든 API에 인증이 필요하다면 다음 방법 중 하나를 선택할 수 있습니다:
1. API Key 기반 인증 (서버 고정)
- Claude가 호출할 수 있도록 서버 측에 고정된 API Key를 설정해 둠
- 내부적으로 사용하는 비공개 API라면 가능
Authorization: Bearer YOUR_SERVER_API_KEY
2. OAuth2 사용자별 인증
- 사용자가 당신의 웹사이트 또는 앱에서 로그인
- 당신이 Claude 에이전트를 구동하는 백엔드에 사용자 access token을 저장
- Claude가 사용자의 작업을 수행할 때 MCP 서버가 그 토큰으로 API 호출
{ "tool": "todo_service",
"action": "create_task",
"parameters": { "title": "회의 준비", "due_date": "2025-05-14" }, "auth": { "type": "bearer", "token": "user123-access-token" }
}
Claude 자체는 이
auth
정보를 읽지 않지만, 당신의 MCP 서버가 이걸 파싱해서 API 요청 시 헤더에 삽입합니다.
https://modelcontextprotocol.io/introduction
그냥 설치하고, 해보는 겁니다.
사용할 수 있는 MCP 플러그인